Xcode supports uploading apps from the Organizer window or from the command line with xcodebuild or xcrun altool. Application Loader is no longer included with Xcode. (29008875)
Authentication: Most commands require authorization. There are two methods available: user name with password, and apiKey with apiIssuer.
-u, --username <username> Username. Required to connect for validation, upload, and notarization. -p, --password <password> Password. Required if username specified and apiKey/apiIssuer are not. If this argument is not supplied on the command line, it will be read from stdin. Alternatively to entering <password> in plaintext, it may also be specified using a '@keychain:' or '@env:' prefix followed by a keychain password item name or environment variable name. Example: '-p @keychain:<name>' uses the password stored in the keychain password item named <name>. You can create and update keychain items with the --store-password-in-keychain-item command. Example: '-p @env:<variable>' uses the value in the environment variable named <variable>
--apiKey <api_key> apiKey. Required for JWT authentication while using validation, upload, and notarization. This option will search the following directories in sequence for a private key file with the name of 'AuthKey_<api_key>.p8': './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'. --apiIssuer <issuer_id> Issuer ID. Required if --apiKey is specified.
-f, --file <file> <file> specifies the path to the file to process. -t, --type {osx | ios | appletvos} Specify the platform of the file.
--primary-bundle-id <bundle_id> Used with --notarize-app to uniquely identify a package.
--asc-provider <provider_shortname> Required with --notarize-app and --notarization-history when a user account is associated with multiple providers.
-v, --validate-app Validates an app archive for the App Store. Authentication and -f are required. --upload-app Uploads the given app archive to the App Store. Authentication and -f are required. --list-apps Display all apps associated with your account(s).
--notarize-app Uploads the given app package, dmg or zip file for notarization. Authentication, -f, and --primary-bundle-id are required. --asc-provider is required for an account associated with multiple providers. If successful, the UUID associated with the upload is returned.
--notarization-info <uuid> Returns the status and log file URL of a package previously uploaded for notarization with the specified <uuid>. Authentication is required. The log file can be retrieved with 'curl <log_file_url>'.
--notarization-history <page> Returns a list of all uploads submitted for notarization. <page> specifies a range of entries where 0 returns the most recent number of entries. A new page value will be returned which can be used as the <page> value to the next use of --notarization-history and so forth until no more items are returned. Authentication is required. --asc-provider is required for an account associated with multiple providers.
--store-password-in-keychain-item <name_for_keychain_item> -u <username> -p <password> Stores the password <password> in the keychain item named <name_for_keychain_item> associated with the account <username>. If an item with that name and account already exists in the keychain, its password will be updated. Otherwise a new item is created with that name. You can use this keychain item with the -p option to mask your password with other commands. Example: altool --store-password-in-keychain-item MY_SECRET -u jappleseed@apple.com -p "MyP@ssw0rd!@78" altool --notarize-app -u jappleseed@apple.com -p @keychain:MY_SECRET [...]
--output-format {xml | normal} Specifies how the output is formatted. 'xml' displays the output in a structured format; 'normal' displays in an unstructured format (default).
--apiKey <api_key> apiKey. Required for JWT authentication while using validation, upload, and notarization. This option will search the following directories in sequence for a private key file with the name of 'AuthKey_<api_key>.p8': './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'. --apiIssuer <issuer_id> Issuer ID. Required if --apiKey is specified.